package week08;


import java.util.ArrayList;
import java.util.Comparator;

class User implements Comparable<User> {
	private int age;

	public User(int age) {
		this.age = age;
	}

	public int getAge() {
		return age;
	}

	@Override
	public int compareTo(User o) {

		return age - o.age;
	}

	@Override
	public String toString() {
		return "User [age=" + age + "]";
	}

}

class StuUser extends User {
	private String no;

	public StuUser(int age, String no) {
		super(age);
		this.no = no;
	}

	public String getNo() {
		return no;
	}

	@Override
	public String toString() {
		return "StuUser [no=" + no + ", toString()=" + super.toString() + "]";
	}

}

class UserReverseComparator implements Comparator<User> {

	@Override
	public int compare(User o1, User o2) {
		return o2.getAge() - o1.getAge();
	}

}

class StuUserComparator implements Comparator<StuUser> {

	@Override
	public int compare(StuUser o1, StuUser o2) {
		return o1.getNo().compareTo(o2.getNo());
	}

}

public class GenericMain2 {
	public static  <T extends  Comparable<? super T>> T max1(ArrayList<? extends T>  list ){
	    int j = 0;
	    for(;list.get(j) == null;)
	        j++;
	    T max = list.get(j);
	    for(T i : list){
	        if(i == null)continue;
	        if(i.compareTo( max) > 0)
	            max = i;
	    }
	    return  max ;
	} 
	public static void main(String[] args) {
		ArrayList<User> stuList=new ArrayList<User>();
		stuList.add( new StuUser(10,"1"));
	    stuList.add( new StuUser(30,"2"));
	    stuList.add( new StuUser(20,"3"));
	    User user = max1(stuList);
	    System.out.println(user);
	    Object user2 = max1(stuList);
	    System.out.println(user2);  
	}
}